package com.ls.pattern.strategy.pay.payport;

import com.ls.pattern.strategy.pay.MsgResult;
import com.ls.pattern.strategy.pay.Order;

/**
 * 支付基类
 *
 * @author 挥之以墨
 */
public abstract class BasePayment {

    /**
     * 获取支付方法
     *
     * @return 支付渠道名
     */
    public abstract String getName();

    /**
     * 获取余额，单位分
     *
     * @param uid 的
     * @return 余额
     */
    protected abstract long queryBalance(String uid);

    /**
     * 通用支付逻辑
     */
    public MsgResult pay(Order order) {
        Long amount = order.getAmount();
        //余额是否足够
        if (queryBalance(order.getUid()) < amount) {
            return new MsgResult(500, "支付失败", "余额不足");
        }
        return new MsgResult(200, "支付成功", "支付金额" + amount);
    }
}
